#ifndef __LINKSTACK_HPP_
#define __LINKSTACK_HPP_

#include "DoubleLinkvoid.hpp"

template <typename T>
class LinkStack
{
public:
    // 入栈
    void Push(const T &data)
    {
        list.InsertTail(data);
    }

    void Pop()
    {
        list.RemoveByIndex(list.Size() - 1);
    }

    T *GetTop()
    {
        if (list.Size() == 0)
            return nullptr;
        return list.back();
    }

    bool IsEmpty()
    {
        return list.Size() == 0;
    }

private:
    DoubleLinkList<T> list;
};

#endif